package haltica.com.mx.ape.daos;

import haltica.com.mx.ape.domain.Cliente;

import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;

privileged aspect ClienteDao {
    
	public static TypedQuery<Cliente> Cliente.findClientesByNombreClienteOrNombreCortoCliente(
			String nombreCliente, String nombreCortoCliente) {
        
    	String query = "SELECT o FROM Cliente AS o";
    	boolean addWhereAnd = true;
    	boolean addNClie = false;
    	boolean addNClieC = false;
    	
		if (nombreCliente != null && nombreCliente.length() > 0) {
			//("SELECT o FROM Paciente AS o where o.apPaterno like :apPaterno",
			query = query + " where o.nombreCliente like :nombreCliente";
			nombreCliente = "%" + nombreCliente + "%";
			addWhereAnd = false;
			addNClie = true;
		}
			
		if (nombreCortoCliente != null && nombreCortoCliente.length() > 0) {
			addNClieC = true;
			nombreCortoCliente = "%" + nombreCortoCliente + "%";
			if (addWhereAnd) {
				query = query + " where o.nombreCortoCliente like :nombreCortoCliente";
			} else {
				query = query + " and o.nombreCortoCliente like :nombreCortoCliente";
			}
		}
		
		EntityManager em = Cliente.entityManager();
		
        TypedQuery<Cliente> q = em.createQuery(query, Cliente.class);
        
		if (addNClie)
			q.setParameter("nombreCliente", nombreCliente);
		
		if (addNClieC)
			q.setParameter("nombreCortoCliente", nombreCortoCliente);
        
        
        return q;
    }
}
